# -*- coding: utf-8 -*-
# File : course_services.py
# Author: taoyahui
# Date : 2021/4/8
from student.models import *
from django.core.paginator import Paginator
from django.core import serializers
from student.results import *


# 分页查询课程信息信息
def query_courses(query_page):
    # 查询所有课程
    objects = course_info.objects.all()
    # 设置分页信息，按每页10行设置
    p = Paginator(objects, 10)
    # 根据分页的页码获取当前页的课程信息列表
    current_p = p.page(query_page)
    object_list = current_p.object_list
    # 将信息转换为json格式
    json_data = serializers.serialize('json', object_list)
    # 构建返回内容
    data = {
        'list': json.loads(json_data),
        'has_next': current_p.has_next()
    }
    return_result = {
        'code': 200,
        'data': data
    }
    # 返回信息
    return json.dumps(return_result)


# 不分页查询所有课程
def query_all_courses():
    objects = []
    course_list = course_info.objects.all()
    for c in course_list:
        object = {'id': c.c_id, 'name':c.c_name}
        objects.append(object)
    return_res = {
        'code':200,
        'data': objects
    }
    return json.dumps(return_res)


# 插入课程
def insert_course(new_dict):
    # 课程名称不能为空，预判断
    if 'c_name' not in new_dict.keys():
        return info_incomplete_result
    # 通过课程名称判断课程是否已存在，如果已存在则不能新建
    if course_info.objects.filter(c_name=new_dict['c_name'])\
            .count() > 0:
        return info_exists_result
    # 新建课程
    course = course_info(
        c_name=new_dict['c_name'],
        c_discript=new_dict['desc'],
        c_teacher=new_dict['teacher'])
    course.save()
    # 返回通用结果
    return success_result


# 修改课程内容
def update_course(update_dict):
    # 判断request的body中是否存在id
    if 'id' not in update_dict.keys():
        return info_error_result
    # 查询对应的课程
    u_course = course_info.objects.get(c_id=update_dict['id'])
    # 如查询信息不存在，返回错误信息
    if not u_course:
        return error_result
    # 更新指定字段
    if 'c_name' in update_dict.keys():
        u_course.c_name = update_dict['c_name']
    if 'desc' in update_dict.keys():
        u_course.c_discript = update_dict['desc']
    if 'teacher' in update_dict.keys():
        u_course.c_teacher = update_dict['teacher']
    # 保存
    u_course.save()
    # 返回正确信息
    return success_result


# 删除选课内容
def remove_course(id):
    # 判断request请求中是否包含id
    if not id:
        return info_error_result
    # 如果有学生已选此课，不能删除课程
    if score_info.objects.filter(c_id=id).count() > 0:
        return stu_course_bind_result
    # 删除课程
    r_course = course_info.objects.get(c_id = id)
    r_course.delete()
    return success_result